package com.xue.zuoye;

/*
* 巴黎时间比北京时间晚7个小时，纽约时间比北京时间晚12个小时，
* 试编写一程序，根据输入的北京时间输出相应的巴黎和纽约时间。
* */

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

public class Task304 {
    public static void main(String[] args) throws ParseException {
        time();
    }
    private static void time(){
        //使用Scanner输入一个日期字符串
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入一个北京时间：（格式：15:30:22)");
        String strBJTime=scanner.nextLine();
        //将时间字符串转化为datetime类型
        Date bjDate=convertString2Date(strBJTime,"HH:mm:ss");
        //将其转化为巴黎和纽约时间。
        Calendar bjcalendar=Calendar.getInstance();
        bjcalendar.setTime(bjDate);
        //获取日期的各个参数信息
        //转化为巴黎时间
        bjcalendar.add(Calendar.HOUR,7);
        //输出巴黎时间
        System.out.println(convertDate2String(bjcalendar.getTime(),"HH:mm:ss"));


        //将其转化为巴黎和纽约时间。
        Calendar nycalendar=Calendar.getInstance();
        nycalendar.setTime(bjDate);
        //获取日期的各个参数信息
        //转化为纽约时间
        nycalendar.set(Calendar.HOUR,nycalendar.get(Calendar.HOUR)+12);
        //输出纽约时间
        System.out.println(convertDate2String(nycalendar.getTime(),"HH:mm:ss"));

    }

    /**
     * 将字符串类型的日期转换为日期对象
     *
     * @param strDate 字符串类型的日期
     * @param pattern 字符串的格式
     * @return 日期对象
     */
    private static Date convertString2Date(String strDate,String pattern){
        // 返回值:默认值为null
        Date date = null;
        if (pattern==null){
            // 给定一个默认的转换格式
            pattern = "yyyy-MM-dd HH:mm:ss";
        }

        // 创建一个日期格式转换的工具类SimpleDateFormat的实例对象
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        //进行转换工作
        try {
            date = sdf.parse(strDate);
        } catch (Exception e) {
            // 如果发生异常，此处进行异常的日志记录
            System.out.println("日期转换发生了问题");
        }

        return date;
    }


    /**
     * 将日期对象转换为指定格式的日期字符串
     *
     * @param date 被转换的日期对象
     * @param pattern 字符串的转换格式
     * @return 指定格式的日期字符串
     */
    private static String convertDate2String(Date date,String pattern){
        // 返回值:默认值为""
        String strDate = "";
        if (pattern == null) {
            // 给定一个默认的转换格式
            pattern = "yyyy-MM-dd HH:mm:ss";
        }

        // 创建个一个日期格式转换的工具类SimpleDateFormat的实例对象
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        // 进行转换操作
        strDate = sdf.format(date);
        return strDate;
    }


}


/*
public class Task304 {
     public static void main(String[] args) throws ParseException {
            time();
        }
        public static void time() throws ParseException{
            //获取实例
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Calendar calendar = Calendar.getInstance();
            Scanner scanner = new Scanner(System.in);

            System.out.println("请依次输入北京时间的年份、月份、日期、时间数、分钟数，秒数用空格隔开……");
            String str1 = scanner.nextLine();

            String[] arr = str1.split(" ");
            if(arr.length != 6){
                System.out.println("你输入的数据个数不符合题意");
            }else{
                String str = arr[0]+"-"+arr[1]+"-"+arr[2]+" "+arr[3]+":"+arr[4]+":"+arr[5];

                Date date = sdf.parse(str);

                System.out.println("北京时间为：" + sdf.format(date.getTime()));
                System.out.println("巴黎时间为：" + sdf.format(date.getTime() - (long)7* 60 * 60 * 1000));
                System.out.println("纽约时间为：" + sdf.format(date.getTime() - (long)12* 60 * 60 * 1000));
            }
        }

    }
*/

